#ifndef EVOLUTION_CONSTANTS_HH
#define EVOLUTION_CONSTANTS_HH

namespace evolution {
    const int NODE_TYPES = 8;

    const float WEIGHT_ABS_RANGE = 3.0f;
    const float WEIGHT_RANGE = 2*WEIGHT_ABS_RANGE;
    const float WEIGHT_MIN = -WEIGHT_ABS_RANGE;
    const float WEIGHT_MAX = WEIGHT_ABS_RANGE;

    const float MUTATION_ADD_NODE_PROBABILITY = 0.2f;
    const float MUTATION_ADD_CONNECTION_PROBABILITY = 0.4f;
    const float MUTATION_NODE_TYPE_CHANGE_PROBABILITY = 0.1f;
    const float MUTATION_CONNECTION_TOGGLE_PROBABILITY = 0.2f;
    const float WEIGHT_MUTATION_PROBABILITY = 0.5f;
    const float WEIGHT_MUTATION_STDDEV = (WEIGHT_MIN-WEIGHT_MAX)/16.0f;

    const float EXCESS_DISTANCE_FACTOR = 1.0f;
    const float DISJOINT_DISTANCE_FACTOR = 1.0f;
    const float WEIGHT_DISTANCE_FACTOR = 0.1f;
    const float SPECIATION_THRESHOLD = 0.5f;
}

#endif
